Field of the Invention
This invention generally relates to computer networks, and more specifically, the invention relates to migrating network resources to improve network utilization. Even more specifically, the preferred embodiment of the invention relates to moving a compute resource, such as a lock manager, around the network with the intent, based on observed or predicted utilization, of reducing or minimizing the amount of network traffic consumed by accessing this resource.
Background Art
Multiple processes running on multi-processing systems may access “shared resources.” Some of these shared resources may be accessed by only one process at a time, while others may be accessed concurrently by multiple processes. Consequently, “synchronization mechanisms” have been developed to control access by multiple processes to shared resources. The synchronization mechanism grants locks to processes. Locks grant to holders of the locks the right to access a particular resource in a particular way. Once a lock is granted to a process, the process holds or owns the lock until the lock is relinquished, revoked, or otherwise terminated. Locks are represented by data structures such as semaphores, read/write latches, and condition variables. There are many types of locks. Some types of locks allow shared resources to be shared by many processes concurrently (e.g. shared read lock), while other types of locks prevent any type of lock from being granted on the same resource (exclusive write lock).
The entity responsible for granting locks is referred to herein as a lock manager. In a single node multi-processing system, a lock manager is typically a software component executed and invoked by processes on the node accessing a shared resource. In contrast to a single node system, a multi-node system is comprised of a network of computing devices or nodes. Each node may be a multi-processing system, and may have a local lock manager to control access to resources of the node that may be shared with other nodes in the system. In these multi-node systems or networks, many nodes may access many other nodes for access to shared resources. Burdening compute nodes for low latency lock access can considerably affect network performance.